package com.nextel.project.usuario.mvc;

import com.nextel.gui.gauge.FrmGaugeProcesar;
import com.nextel.gui.gauge.Procesar;
import com.nextel.project.cliente.ControlCliente;
import com.nextel.project.pedido.ControlPedido;
import com.nextel.project.stock.ControlStock;
import com.nextel.project.usuario.ControlUsuario;
import com.nextel.ui.Key;
import com.nextel.ui.OListenerKey;
import com.nextel.ui.OScrollList;
import com.nextel.ui.OSoftKey;
import com.nextel.ui.OUILook;
import javax.microedition.lcdui.Image;
import pe.com.nextel.idioma.IdiomaManager;
import pe.com.nextel.main.MVCAction;
import pe.com.nextel.util.ArrayList;
import pe.com.nextel.util.List;
import pe.com.nextel.util.StringUtils;

/**
 * Menu del aplicativo
 *
 * @version 1.0
 */
public class MVCMenu extends MVCAction implements Procesar, OListenerKey {
    
    private OScrollList lstMenu;
    private OSoftKey cmdNull, cmdExit, cmdayuda;
    private boolean flagForm;
    
    /**
     * Crea el formulario y agrega los commands
     */
    protected void createView() {
        
        //cmdNull = new OSoftKey(Configuracion.BOTON_SEGUIR);
        cmdNull = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_SEGUIR).toUpperCase());
        //cmdExit = new OSoftKey(Configuracion.BOTON_SALIR);
        cmdExit = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_SALIR).toUpperCase());
        //cmdayuda = new OSoftKey("Ayuda");
        cmdayuda = new OSoftKey(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_AYUDA).toUpperCase());
        
        formulario.setTitle(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_TITULO).toUpperCase(), OUILook.PLAIN_SMALL_TITLE);
        
        formulario.addSoftKey(cmdNull);
        formulario.addSoftKey(cmdExit);
        formulario.addSoftKey(cmdayuda);
    }
    
    /**
     * Crea los Items del formulario del menu
     */
    protected void createItems() {
        flagForm = true;
        try {
            
            String[] options = obtenerListaDatos( );
            
            Image[] images = obtenerListaImagen( );

            lstMenu = new OScrollList(formulario.getWidth(), (formulario.getBodyHeight()),
                    OUILook.PLAIN_SMALL_SOFTKEY, OUILook.PLAIN_SMALL_TEXT);
            
            lstMenu.isWithBorder = false;
            lstMenu.populate(options);
            lstMenu.setImages(images, formulario.getBodyHeight());
            
            lstMenu.listenerKey = this;
            formulario.add(lstMenu);
//            System.out.println("Thread.activeCount= " + Thread.activeCount());
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public void performAction(OSoftKey c) {
        if (c == cmdExit) {
            destroy();
            ControlUsuario.getInstance().exitBussiness();
        } else if (c == cmdNull) {
            performKey(lstMenu.getSelectedIndex() + 1);
        } else if(c==cmdayuda){
            destroy();
            ControlUsuario.getInstance().setCurrent(ControlUsuario.getInstance().mvcAyuda.showScreen());
        }
    }
    
    public void performKey(int indx) {
        
        if (flagForm) {
            try {
                
                if (indx == Key.Key_OK) {
                    indx = lstMenu.getSelectedIndex() + 1;
                }
                
                switch (indx) {
                    case 1:
                        flagForm = true;
                        destroy();
                        
                        if (ControlUsuario.getInstance().hashGeneral == null) {
                            new FrmGaugeProcesar(this);
                        } else {
                            ControlUsuario.getInstance().setCurrent(ControlCliente.getInstance().mvcClienteBusqueda);
                        }
                        break;
                        
                    case 2:
                        flagForm = true;
                        destroy();
                        
                        ControlPedido.getInstance().setCurrent(ControlUsuario.getInstance().mvcSincronizar.showScreen());
                        break;
                    case 3:
                        flagForm = true;
                        destroy();
                        ControlPedido.getInstance().setCurrent(ControlUsuario.getInstance().mvcEnvio.showScreen());
                        break;
                    case 4:
                        if("1".equals(ControlUsuario.getInstance().currentUsuario.pedido)){
                            flagForm = true;
                            destroy();
                            ControlPedido.getInstance().procesarPedidoCantidad();
                            
                            break;
                        }
                        
                    case 5:
                        if("1".equals(ControlUsuario.getInstance().currentUsuario.eficiencia)){
                            flagForm = true;
                            destroy();
                            ControlPedido.getInstance().setCurrent(ControlPedido.getInstance().mvcReporteKPI.showScreen());
                            
                            break;
                        }
                        
                    case 6:
                        
                        if("1".equals(ControlUsuario.getInstance().currentUsuario.stock_linea)){
                            flagForm = true;
                            ControlStock.getInstance().mvcProductoBusqueda.setBusquedaMVC(ControlStock.getInstance().getBusquedaMVC());
                            ControlStock.getInstance().setCurrent(ControlStock.getInstance().mvcProductoBusqueda);
                            destroy();
                            
                            break;
                        }
//                    case 7:
//                        flagForm =  true;
//                        destroy();
//                        ControlUsuario.getInstance().setCurrent(ControlUsuario.getInstance().mvcAyuda.showScreen());
//                        break;
                        
                        
                }
                
                
                StringUtils.getStaticsMemoria();
            } catch (Exception ex) {
                flagForm = true;
                ex.printStackTrace();
            }
        }
    }
    
    
    
    
    public void realizarProceso() {
        try {
            
            ControlUsuario.getInstance().getHashListaGeneral();
            ControlUsuario.getInstance().setCurrent(ControlCliente.getInstance().mvcClienteBusqueda);
        } catch (Exception ex) {
            ex.printStackTrace();
            ControlUsuario.getInstance().showError("Error " + ex, ControlUsuario.getInstance().mvcMenu.showScreen());
        }
    }
    
    public String[] obtenerListaDatos()throws Exception{
        
        String permiso = "1";
        List lista = new ArrayList();
        
        //lista.add("Iniciar");
        lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_INICIAR));
        //lista.add("Sincronizar");
        lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_SINCRONIZAR));
        //lista.add("Env\u00EDos");
        lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_ENVIOS));
        
        if(permiso.equals(ControlUsuario.getInstance().currentUsuario.pedido)){
            //lista.add("Consolidado");
            lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_CONSOLIDADO));
        }
        
        if(permiso.equals(ControlUsuario.getInstance().currentUsuario.eficiencia)){
           // lista.add("Eficiencia");
            lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_EFICIENCIA));

        }
        
        if(permiso.equals(ControlUsuario.getInstance().currentUsuario.stock_linea)){
            //lista.add("Stock");
            lista.add(IdiomaManager.getInstance().getMensaje(IdiomaManager.JAVA_STOCK));
        }
        //lista.add("Ayuda");

        String[] datos  = new String[lista.size()];
        
        for(int i=0; i<lista.size() ;i++){
            datos[i] = (i+1)+". "+(String)lista.get(i);
        }
        
        return datos ;
        
    }
    
    public Image[] obtenerListaImagen()throws Exception{
        
        String permiso = "1";
        List lista = new ArrayList();
        
        lista.add(Image.createImage("/clientes.PNG"));
        lista.add(Image.createImage("/sincronizar.PNG"));
        lista.add(Image.createImage("/pendientes.PNG"));
        
        if(permiso.equals(ControlUsuario.getInstance().currentUsuario.pedido)){
            lista.add(Image.createImage("/consolidado.PNG"));
        }
        
        if(permiso.equals(ControlUsuario.getInstance().currentUsuario.eficiencia)){
            lista.add(Image.createImage("/efectividad.PNG"));
        }
        
        if(permiso.equals(ControlUsuario.getInstance().currentUsuario.stock_linea)){
            lista.add(Image.createImage("/Stock.PNG"));
        }
        //lista.add(Image.createImage("/star.PNG"));
        
        Image[] imagenes  = new Image[lista.size()];
        
        for(int i=0; i<lista.size() ;i++){
            imagenes[i] = (Image)lista.get(i);
        }
        
        return imagenes;
    }
}
